Guild Wars Forums - GW Guru
 
 

Go Back   Guild Wars Forums - GW Guru > The Inner Circle > Sardelac Sanitarium

Notices

Reply
 
Thread Tools Display Modes
Old Nov 30, 2006, 07:28 AM // 07:28   #1
Ascalonian Squire
 
Join Date: May 2006
Advertisement

Disable Ads
Default Having an Option to Turn off Dynamic Model/Terrain/Shadow Map Detail Scaling

Pretty much as title says I was hoping developers could let us choose NOT to have dynamic scaling go in effect on character/monster/shadow maps or terrain details . Yes detail scaling is a very nifty trick to make the game have playable FPS on most of the users PCs and it reduces FPS when turned off.

There are powerful CPUs/Graphics Cards available now compared to the ones GW was targeted at when it first came out (I remeber joining global events with a 9800). So I guess letting people with more powerful hardware get rid off ugly ^ shaped character heads and jaggy 2D palnes in palce of terrain geometry is not a bad idea.

I want to add that the scaling process on model/terrain details seems to be scaling the details down relative to their distance from users field of view regardless of user's hardware config. For example the IDS cave in mineral springs, show the rocks on the wall as jagged low-res 2D planes and they are not even 10 feet away from where I am standing, they wont turn into full 3D unless I get much closer and my computer specs is not bad at all.

Also when you zoom out the character's shadow detail is lost and it turns out to some ghostly barely visible shadow and your character's head becomes an arrow-head, all with every in-game graphics/VGA control panel options maxed at high resolution.


Things I mentioned above have been present for a good while now I just didnt find a good time to post about them on the forums.

Do you think there is a chance to get a feedback on this from developers? I would love to spare a good chunk of my FPS to get rid of those things I mentioned above. Anyone else thinking the same?

I love GW's gameplay but I also care a lot about graphics wich was the major reason I chose GW over the significant other game.

Cheers!

PS:I started the same thread in Tech Corner wich apparently wasnt the right section for this topic so I made a new thread here sorry for the double thread.
DaGGeR is offline   Reply With Quote
Old Nov 30, 2006, 01:14 PM // 13:14   #2
Forge Runner
 
Join Date: Jan 2006
Default

The technique is called Billboarding or Imposters.

There's a very sound and valid reason for it, and has to deal with technical nature of graphic cards, rendering pipeline, and memory management.

Shortly put, GW renders a lot. Without using this aproach, it would need to render 5-50 times more geometry, but the performance would decrade by a factor of thousands.

As it turns out, it's not all in polygons. The main problem imposters solve is state switching. Each time you want to render a different texture, object in different color, a different mesh, different object, graphic card needs to switch its state. This is an insanely expensive operation. Todays cards can render millions and billions of polygons per second. Yet they can only perform dozens of state switches per second. The idea of imposters is that they don't reduce the polygon count - that's the minor part, but allow all of them to be drawn in a single pass without switching state - making it an extremly cheap operation, and producing what looks like a scene with tens of thousands of polygons and hundreds of textures.

This doesn't scale. The imposters became a staple of 3D engines allowing graphics to improve by a factor of 10 without sacrificing performance. There are some alternate techniques, but they require every map to be manually partitioned - expensive, works for FPS games where you only have 5-10 maps.
Antheus is offline   Reply With Quote
Old Nov 30, 2006, 03:25 PM // 15:25   #3
Ascalonian Squire
 
Join Date: May 2006
Default

Quote:
Originally Posted by Antheus
The technique is called Billboarding or Imposters.

There's a very sound and valid reason for it, and has to deal with technical nature of graphic cards, rendering pipeline, and memory management.

Shortly put, GW renders a lot. Without using this aproach, it would need to render 5-50 times more geometry, but the performance would decrade by a factor of thousands.

As it turns out, it's not all in polygons. The main problem imposters solve is state switching. Each time you want to render a different texture, object in different color, a different mesh, different object, graphic card needs to switch its of impstate. This is an insanely expensive operation. Todays cards can render millions and billions of polygons per second. Yet they can only perform dozens of state switches per second. The idea osters is that they don't reduce the polygon count - that's the minor part, but allow all of them to be drawn in a single pass without switching state - making it an extremly cheap operation, and producing what looks like a scene with tens of thousands of polygons and hundreds of textures.

This doesn't scale. The imposters became a staple of 3D engines allowing graphics to improve by a factor of 10 without sacrificing performance. There are some alternate techniques, but they require every map to be manually partitioned - expensive, works for FPS games where you only have 5-10 maps.
Ok thanks for the reply, interesting read. Is it the number of rasterization operation units on GPUs , the state switching limitation that you are refering to? As the most advanced GPU currently has 24 of them. Or this one? Can you guide me to a link where I can read up on state switching?

The problem is at some instances the outcome of the technique is not good in GW. You can check it yourself in the ice imps cave deep into the mineral springs when approaching rocks on the left wall or in the desert while approaching the wooden towers. The 2D sprite that appear are of uber low quality and its not mimicking a 3D object at all as I assume the 2D sprites are meant to make you think you are looking at a full 3D object while in fact its a 2D sprite facing your field of view.

If youre a member of the dev team do you think theres a chance to slightly modify the process to use less aggressive measures? I dont think rendering my character's head plus a few monsters is such a heavy task that needs to be toned down by turning all their craniums on the screen to a pointy single triangle when I zoom out. or is it tied to the algorithm that is being used to optimize performance in rendering geometry?
DaGGeR is offline   Reply With Quote
Old Nov 30, 2006, 08:06 PM // 20:06   #4
Forge Runner
 
Join Date: Jan 2006
Default

No, I'm not a member of dev team , just *a* developer. So, everything expressed here is only my opinion. While not very likely, I could obviously be wrong.

Billboarding and imposters:
http://www.gamasutra.com/features/20...davis_01.shtml

For a brief summary on one of key performance bottleneck in today's complex graphics, this is a simple explanation of how severe render state switches are:
http://www.gamasutra.com/features/19...itchell_01.htm

Despite being an old article, same issues are still published for today's most sophisticated graphics cards.

As the article clearly states, the size of textures, the number of polygons rendered have 0 impact on performance, but switching between textures, polygons, shaders and other techniques is what causes extreme performance degradation.

What all recomend, is not to reduce number of polygons, they recomed to push the number of polygons rendered within a single state as high as possible. For example: during loading in GW, you can clearly see, that heads (for example) get rendered first, then all the hand weapons, then all the arms, and torsos last. All heads use the same mesh, so do all arms, and they also use the same texture map (one texture, but all possible variations).

This is direct effect of grouping objects to minimize the number of texture and mesh switches, hence optimally rendering entire scene.

While GW does exhibit graphic artefacts, the engine does a good job overall. I don't know if this can be changed, or how severe the performance impact would be. But typical complexity for rendering n objects is n^2 (if you double the number of objects, it will take 4 times as long to render the scene). In addition, having multiple rasterizer units, you only reduce this by a linear ammount, so, n^2 / 24. If you compare this for large values, you'll see the 24 or 48 or even 128 makes almost no difference.

Graphics cards today are mostly trying to push quality, since performance has somewhat peaked, and is no longer limited by hardware, but by software and memory constraints. This is also why many today's games have same look and feel to their graphics - they all push them as far as possible.
Antheus is offline   Reply With Quote
Old Nov 30, 2006, 09:06 PM // 21:06   #5
Ascalonian Squire
 
Join Date: May 2006
Default

I see thanks for the links. I will read them all up and digest as much as I can.

Still do you see the changing of details(poly counts/texture detail/ shadow map detail), on your own character relative to its distance from camera (so to speak) as a result of impostering method? I havent read the articles yet so I might get the answer there. But if you think I cant find the answer to my question in those articles hit me with an answer.


Its sad though that you say performance is peaked on graphics cards.But looking at the size and transistor count plus the wattage they use and the amount of heat they produce it shouldnt be that hard to see that they cannot continue on this path forever. At some point the kind of waste these little nuclear reactors produce is going to kill them off they just cant add up to transistor counts and get better performance. There is a wall some where on the road waiting for them. Although there is much more to GPU efficiency than transistor count I assume, but graphics hardware companies add up to the total count in every generation.

A funny quote I read somewhere said considering the rate at wich graphic cards are getting bigger and bigger soon you will be installing your motherboard onto your graphics card! its a joke for sure as moving to smaller chip fabrication methods plus integration with cpu is supposed to cobmat this. Supposed to... We'll see about that.

Last edited by DaGGeR; Nov 30, 2006 at 10:23 PM // 22:23..
DaGGeR is offline   Reply With Quote
Old Dec 01, 2006, 12:35 AM // 00:35   #6
Forge Runner
 
Join Date: Jan 2006
Default

Quote:
Originally Posted by DaGGeR
A funny quote I read somewhere said considering the rate at wich graphic cards are getting bigger and bigger soon you will be installing your motherboard onto your graphics card! its a joke for sure as moving to smaller chip fabrication methods plus integration with cpu is supposed to cobmat this. Supposed to... We'll see about that.
Majority of work no longer falls into texture and polygon rendering, but shaders. They are used for everything from animation to visual effects to object detail features. The predicted work distribution is 1:500 between pure polygon shuffling and work done by shaders. It's also one of the reasons DX10 provided by Vista is not intended to be backwards compatible with cards not supporting it natively, since it uses completely new architecture to make best use of this technology.

But as such, polygon counts handled by today's cards are more than sufficient to achieve maximum visual quality through use of different techniques. As a matter of fact, it's possible to reduce polygon counts just because of that. Why use 16 polygons to draw a bolt, when you can simulate it at much higher resolution using a shader and a texture.

Enough of off-topic though.
Antheus is offline   Reply With Quote
Reply

Share This Forum!  
 
 
           

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 10:48 AM // 10:48.


Powered by: vBulletin
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
jQuery(document).ready(checkAds()); function checkAds(){if (document.getElementById('adsense')!=undefined){document.write("_gaq.push(['_trackEvent', 'Adblock', 'Unblocked', 'false',,true]);");}else{document.write("